package cn.edu.jxust.core.domain.repository;

import cn.edu.jxust.common.domain.entity.Account;
import cn.edu.jxust.common.domain.entity.Enterprise;
import cn.edu.jxust.common.domain.valobj.EnterpriseVo;
import cn.edu.jxust.common.response.Result;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;

/**
 * @author QiuKangming
 * @since 2020-06-29
 */
@SuppressWarnings("unused")
public interface EnterpriseService extends IService<Enterprise> {

    /**
     * 根据企业名字和区域id查找企业信息
     * @param areaId 区域id
     * @param name 企业名称
     * @return Enterprise
     */
    Enterprise findByNameAndAreaId(Integer areaId, String name);

    /**
     * 根据企业id查找企业名称
     * @param id 企业id
     * @return String
     */
    String getEnterpriseNameById(Integer id);

    /**
     * 新增企业信息
     * @param enterpriseVo 企业视图对象
     * @return Result
     */
    Result addEnterprise(EnterpriseVo enterpriseVo);

    /**
     * 根据 id 删除企业信息
     * @param id 企业id
     * @return Result
     */
    Result delEnterpriseById(Integer id);

    /**
     * 分页获取企业信息
     * @param paramMap 参数集合
     * @param account 当前账户对象
     * @param page 第几页
     * @param size 一页几条数据
     * @return IPage<EnterpriseVo>
     */
    IPage<EnterpriseVo> getEnterpriseVoList(Map<String, String[]> paramMap, Account account, Integer page, Integer size);

    /**
     * 根据区域id查询企业列表
     * @param areaId 区域id
     * @return List<Enterprise>
     */
    List<Enterprise> getEnterpriseListByAreaId(Integer areaId);

    /**
     * 修改企业信息
     * @param enterpriseVo 企业视图对象
     * @return Result
     */
    Result modifyEnterpriseInfo(EnterpriseVo enterpriseVo);

    /**
     * 判断企业中是否有该区域的企业, 返回个数
     * @param areaId 区域id
     * @return int
     */
    int checkEnterpriseArea(Integer areaId);

}
